/*
OPL.C
*/

#include <p_std.h>

#pragma call(c_conv=>off,reg_param =>(ax,bx,cx,dx),reg_saved =>(di,si,ds,st1,st2))

LOCAL_C INT f1(INT p1,INT p2,INT p3);
LOCAL_C INT f2(INT p1,INT p2,INT p3);

#pragma save
#pragma call(seg_name=>null,near_call=>off)
GLDEF_C INT choose(INT procno,INT p1,INT p2,INT p3)
/*
Must return with a retf (ret far), since called from OPL
*/
	{
	switch (procno)
		{
	case 1:
		return (f1(p1,p2,p3));
	case 2:
		return (f2(p1,p2,p3));
		}
	return (-1);
	}
#pragma restore

LOCAL_C INT f1(INT p1,INT p2,INT p3)
	{
	return (1234);
	}

LOCAL_C INT f2(INT p1,INT p2,INT p3)
	{
	return (9876);
	}
